package com.wjjun.base.data.repository

import com.wjjun.base.data.model.BaseResponse
import kotlinx.coroutines.*

/**
 * 基础数据存储库。
 * 存储库类负责以下任务：
 * 向应用的其余部分公开数据。
 * 集中处理数据变化。
 * 解决多个数据源之间的冲突。
 * 对应用其余部分的数据源进行抽象化处理。
 * 包含业务逻辑。
 *
 * 存储库类以其负责的数据命名。具体命名惯例如下：
 * 数据类型 + Repository。
 * 将依赖于其他存储库类的存储库类称为 manager， 例如： UserManager依赖与LoginRepository和UserRepository等，包含其他存储库的存库类
 * author : wangjunjun
 * date   : 2022/6/1
 * desc   :
 */
abstract class BaseRepository(
    protected val defaultDispatcher: CoroutineDispatcher = Dispatchers.IO
) {
    suspend fun <T : Any> execute(
        successBlock: (suspend CoroutineScope.() -> Unit)? = null,
        errorBlock: (suspend CoroutineScope.() -> Unit)? = null
    ) {
        return withContext(defaultDispatcher) {
            coroutineScope {

            }
        }
    }
}